﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using MotorMetricas.Logica;
using MotorMetricas.Entidades;
using MotorMetricas.Datos;

namespace MotorMetricas.Prueba
{
    [TestFixture]
    class PruebaMotor
    {
        //metodo que me ayuda a verificar que el metodo cargarProyectosMotor de la clase Motor
        //funcione correctamente, y que trae proyectos de la base de datos
        [TestCase]
        public void cargarProyectosMotor()
        {
            int cant = 0;
            List<Proyecto> MisProyectos = new List<Proyecto>(); 
            //creo una lista de proyectos
            List<Proyecto> Proyectos = new List<Proyecto>();  //creo una lista de proyectos donde se le asignara el resultado del metodo cargarProyectos de la clase Motor
            Proyectos = Motor.cargarProyectos(MisProyectos); //ejecuto el metodo cargarProyecto de la clase Motor pasandole una lista de proyectos
                                                             //y ese valor resultado lo asigno a la variable Proyectos que es una lista de pyoyectos
            cant = Proyectos.Count;                          // me guarda en la variable cant la cantidad de proyectos devueltos de la lista
            Assert.IsInstanceOf(typeof(List<Proyecto>), MisProyectos);  //verifica que los datos devueltos sean de tipo lista de proyecto
            Assert.AreNotEqual(cant, 0);                                //verifica que devuelva una cantidad de proyectos y no cero
        }

        //Esta prueba me ayuda a comprobar que el metodo cargarPerfilMetrica de la clase Motor funcione
        //y me devuelva un perfil
        [TestCase]
        public void cargarPerfilMetrica()
        {
            Proyecto proyect = new Proyecto();              //creo un proyecto al cual se le va a cargar el perfil
            PerfilMetrica perfil = new PerfilMetrica();     //creo un perfil de metricas
            perfil = Motor.cargarPerfilMetrica(proyect);    //verifico que el metodo de la clase motor para cargar las metricas
                                                            //dado un proyecto este funcionando, y me devuelva el perfil de dicho proyecto
            Assert.IsInstanceOf(typeof(PerfilMetrica), perfil);     //me chequea que el valor devuelto sea efectivamente un perfil de metricas
            Assert.IsNotNull(perfil);                               //verifica si el perfil no es nulo
            Assert.IsNotNull(perfil.MisMetricas);                   //verifica que la lista no sea nulo
            Assert.IsNotEmpty(perfil.NombrePerfilMetrica);          //verifica que el nombre de la metrica no este vacio

        }
    }
}
